package com.tangsm.spring.boot.degradation.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 资源降级
 *
 * @author tangsm
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResourceDegradation {

    /**
     * 最大阈值
     *
     * @return 最大阈值
     */
    int maxThreshold() default 1;

    /**
     * 限流回调实现类
     *
     * @return 限流回调实现类
     */
    Class fallbackClass();

    /**
     * 限流回调方法名称，不填默认为被限流的方法名称
     *
     * @return 限流回调方法名称
     */
    String fallbackMethod() default "";

    /**
     * 方法资源ID，一个方法代表一个资源ID，这个id必须是唯一不可重复的值
     *
     * @return 方法资源ID
     */
    String resourceId();

}
